#!/bin/sh
# Dont ultrapass '|'
#
#--------HEADER---------------------------------------------------------------|
#AUTOR
#  Jefferson Rocha <lrcjefferson@gmail.com>
#
#PROGRAMA
#  Pressao - Controle de Pressão Arterial
#
#DESCRIÇÃO
#  Dados de inserção para controle de pressão arterial.
#
#LICENÇA
#  MIT - https://notabug.org/jeffersonrocha/Pressao/raw/master/LICENSE
#
#CHANGELOG
#  **Versão 1.2 - Jefferson Rocha
#   -Inserido Opção inline de procura por data.
#   -Inserido Opção de ajuda.
#
#
#  **Versão 1.3 - Jefferson Rocha
#   -Inserido a opção de 'bloqueio' e 'desbloqueio' do banco de dados com o
#   comando 'chattr'.
#
#   -Tirado a Var '$HOME' das váriaveis '$dir e $backup' e colocado caminho
#   absoluto, retirando assim possíveis erros futuros.
#
#   -Substituido algumas váriaveis:
#   'dir' por: diretorio_principal
#   'dir_bp' por: banco_de_dados
#   'backup' por: diretorio_backup
#-----------------------------------------------------------------------------|


#--------------CONFIGURACAO--------------#
# INSIRA OS DADOS e Configurações aqui!

# Nome COMPLETO
Nome="" 

# Formato exemplo: 15/12/1985                   
Data_de_nascimento=""

# Exemplo "Hidrocloritiazida - 50mg, Besilapin - 5mg"   
Remedios=""

# Diretorio do bd
# Mude se necessário!
diretorio_principal="/home/slackjeff/press"

# Banco de dados
# mude se necessário.
banco_de_dados="$diretorio_principal/bd.txt"

# Caminho para Backup
# Mude se necessário.
diretorio_backup="/home/slackjeff/bd-pressao-bkp.txt"                

#=========== NÃO MEXER DAQUI PARA BAIXO! ===========#





#--------------VARS--------------#

versao="1.2"

#--------------------------------#


#--------------FUNCOES--------------#

_adicionar(){

# Inserindo dados no banco de dados.
if [ -e "$banco_de_dados" ] && [ -w "$banco_de_dados" ]; then
      if echo "  $Data          $Hora             $Pressao" >> "$banco_de_dados"; then
            echo "Dados inseridos com sucesso!"
      else
            echo "Houve um erro."
      fi
else
    echo "Arquivo não existe ou Sem permissão de Escrita..."
fi

}

_template(){
cat >> "$banco_de_dados" <<EOF

     PACIENTE
  ==============

   Nome: $Nome
   Data de Nascimento: $Data_de_nascimento
   Remedios em Uso: $Remedios

  -----------------------------------------------------------------------

    PRESSÃO ARTERIAL MEDIÇÃO
  ============================
  
   **NOTA
   Fazer medição TODOS os dias as X horas da manhã.
   Medicando com os remédios:

  -----------------------------------------------------------------------



    DATA              HORA            PRESSÃO
  ========          =========       ===========          
EOF

}


_ajuda(){
cat << EOF
Pressao - Controle de Pressão Arterial $versao
Copyright (C) 2018 Jefferson Rocha <lrcjefferson@gmail.com>
License: MIT - https://notabug.org/jeffersonrocha/Pressao/raw/master/LICENSE
Banco de dados utilizado é em Texto puro, para os mais familiarizados Plain-Text.
Este formato é mais limpo, leve e sem frufrus adicionais.
BUGS: lrcjefferson@gmail.com

Sintaxe: pressao [OPÇÃO]

Opções Disponíveis:
    -i, inserir
        Questionatário será perguntado 'Data da medição', 'Hora da medição' e 'Pressão Arterial'
        Exemplo de um padrão exato:

        Qual à Data: 18/05/2015
        Qual à Hora: 15:20
        Qual à Pressão: 12x7
        
        *É importante não deixar nenhum campo nulo, se não o programa fecha.
        No banco de dados será armazenado no formato em linha e caso o usuário peça para 'visualizar'
        será visualizado neste formato:

           DATA              HORA            PRESSÃO
         ========          =========       ===========          
        18/05/2015           15:20             12x7


    -v, visualizar
        Visualize todo banco de dados, contendo todas as informações como 'Data' 'Hora' e 'Pressão'.

    -p, procurar
        Procure pela 'Data' a informação necessária, exemplo:

        pressao procurar 14/10
        pressao procurar 14
        pressao procurar 14/10/2018

        Será exibido todas a(s) data(s) que coinsidirem.

    -a, ajuda
        Mostra à ajuda completa do programa e sai.
EOF

}

#----------------------------------#




#--------------TESTES--------------#

# Se diretorio não existir, crie!
[ ! -e "$diretorio_principal" ] && { mkdir "$diretorio_principal" ;}

# Se banco de dados não existir crie!
[ ! -e "$banco_de_dados" ] && { _template ;}

# chattr existe?
[ $(type -P chattr) ] && comando_chattr="on"

#---------------------------------#




#--------------Inicio--------------#

case $1 in
    -i|inserir)
         for dados in "Data" "Hora" "Pressao"; do
              read -p "Qual à ${dados}: " "${dados}"
              # Conferindo se dado está nulo, se está tchau.
              for null in "$Data" "$Hora" "$Pressao"; do
                    if [ -z "$null" ]; then
                         echo "Dado nulo, saindo."
                         exit 1
                    else
                        break
                    fi
              done
         done
        _adicionar  # Chamada função para adicionar dados.
    ;;

   -v|visualizar) cat "$banco_de_dados" | less ;;

   -p|procurar)
        shift
        while [ -n "$1" ]; do
           if grep -E "^..$1" "$banco_de_dados" >> /tmp/arq; then
                 if [ -e "/tmp/arq" ]; then
                    echo -e "\033[31;1mArquivos Encontrados:\033[m"
                    cat "/tmp/arq"
                    rm "/tmp/arq"
                 fi
           else
                echo "Nenhum dado com está data foi encontrado."
                rm "/tmp/arq"
           fi
        shift
        done       
    ;;

   backup) cat "$banco_de_dados" >> "$diretorio_backup" ;;

   bloquear)
          # Chattr existe? ok, vamos ver se é root.
          if [ "$comando_chattr" = "on" ]; then
              if [ $(id -u) -eq "0" ]; then
                  if chattr +i "$banco_de_dados"; then
                      echo -e "$banco_de_dados foi bloqueado com sucesso...\nPara desbloqueio use o parâmetro 'desbloquear' não se esqueça."
                  else
                      echo "Houve algum problema... não foi possível bloquear $banco_de_dados ..."
                  fi
              else
                  echo "Necessita de Root para usar este parâmetro."
                  exit 1
              fi
          else
              echo "Impossível bloquear, instale o 'chattr' para prosseguir."
          fi
    ;;

   desbloquear)
          # Chattr existe? ok, vamos ver se é root.
          if [ "$comando_chattr" = "on" ]; then
              if [ $(id -u) -eq "0" ]; then
                  if chattr -i "$banco_de_dados"; then
                      echo -e "$banco_de_dados foi desbloqueado com sucesso..."
                  else
                      echo "Houve algum problema... não foi possível desbloquear $banco_de_dados ..."
                  fi
              else
                  echo "Necessita de Root para usar este parâmetro."
                  exit 1
              fi
          else
              echo "Impossível desbloquear, instale o 'chattr' para prosseguir."
          fi
    ;;

   -v|versao) echo "Pressao versão $versao" ;;    

   *|-a|ajuda) _ajuda ;; # Chamda função _ajuda.
esac

#------------------------------------------#
